package com.lcx.movie.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lcx.movie.entity.Orderinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
/**
 * @Description  订单信息接口
 * @version 1.0 
 * @author lcx
 * @date 2025/2/9 11:25
 */
@Mapper
public interface OrderinfoMapper extends BaseMapper<Orderinfo> {
    /**
     * 根据订单状态分页模糊查询订单表
     * @param orderState 订单状态
     * @return 订单信息集合
     */
    public List<Orderinfo> selectOrderinfoPage(@Param("orderState")String orderState);

    /**
     * 根据用户id查询个人订单
     * @param userId 用户id
     * @return 订单信息集合
     */
    public List<Orderinfo> findOrdersByUserId(Integer userId);

    /**
     * 根据用户id查找订单信息
     * @param userId 用户id
     * @return 订单信息集合
     */
    List<Orderinfo> findOrdersByUserName(String userId);

    /**
     * 根据用户id查询订单信息
     * @param userId 用户id
     * @return 订单信息集合
     */
    List<Orderinfo> findOrdersByUser(String userId);

    /**
     * 根据场次id查询订场次
     * @param scheduleId 场次id
     * @return 订单信息集合
     */
    List<Orderinfo> selectScheduleById(@Param("schedule_id") long scheduleId);

    /**
     * 买票
     * @param orderId 订单id
     * @param userId 用户id
     * @param schedule_id 场次id
     * @param position 位置
     * @param price 价格
     * @return 受影响的行数
     */
    int buyTickets( @Param("orderId") String orderId, @Param("userId") Integer userId, @Param("schedule_id") long schedule_id, @Param("position") String position, @Param("price") int price);

    /**
     * 修改订单状态
     * @param orderId 订单id
     * @param state 状态
     * @return 受影响的行数
     */
    int updState(@Param("orderId") String orderId,@Param("state") int state);
//    List<Orderinfo> selectScheduleById(@Param("schedule_id") long scheduleId);

    /**
     * 影院管理员查看订单信息
     * @param cinemaId 影院id
     * @return 订单集合
     */
    public List<Orderinfo> selectOrderInfoByCinemaId(@Param("cinemaId") Integer cinemaId,
                                                     @Param("orderState") Integer orderState);

    /**
     * 同意退票方法
     * @param orderId 订单id
     * @return 受影响的行数
     */
    public int agreeRefund(@Param("orderId") String orderId);

    /**
     * 根据影院id查询该影院的订单数量
     * @param cinemaId 影院id
     * @return 订单数量
     */
    public int getCinemaManageOrder(@Param("cinemaId") Integer cinemaId);

}